import requests
from datetime import datetime
from config.Peizhi import Qj

# 从配置文件中导入 Qj 类并实例化，用于获取清洁度标准值等配置信息
qj = Qj()
# 假设的 API URL，用于将故障信息推送到该 API，需根据实际情况修改
API_URL = "http://222.134.245.144:17000/weizhang/VioModel/"

# 定义一个函数，用于将故障信息推送到 REST API
def send_fault_to_api(fault_info):
    """推送故障信息到 REST API"""
    try:
        # 发送 POST 请求，将故障信息以 JSON 格式发送到指定的 API 地址
        response = requests.post(API_URL, json=fault_info)
        if response.status_code == 201:
            # 如果请求成功（状态码为 201），打印成功推送的信息
            print(f"故障推送成功：{fault_info['gu_zhang_miao_shu']}")
        else:
            # 如果请求失败，打印失败信息，包含状态码和响应内容
            print(f"推送失败，状态码：{response.status_code}，响应：{response.text}")
    except requests.exceptions.RequestException as e:
        # 如果请求过程中出现异常，打印异常信息
        print(f"网络请求失败：{str(e)}")

# 定义一个函数，用于检查清洁度是否超标
def Youqj():
    # 定义获取清洁度数据的 API URL
    url = 'http://222.134.245.144:17000/chuanganqi/QjdDeviceModel/'
    # 发送 GET 请求获取数据
    response = requests.get(url)
    # 检查请求是否成功
    if response.status_code == 200:
        # 如果请求成功，将响应内容转换为 JSON 格式
        data = response.json()
        # 获取结果列表
        results = data.get("results", [])
        if not results:
            # 如果结果列表为空，打印后端没有数据的信息并返回
            print("后端没有数据")
            return
        # 获取最新的结果
        latest_result = results[-1]
        # 假设清洁度数据在返回结果中的键名为 "data"，实际需根据真实数据结构调整
        cleanliness_value = latest_result.get("data")
        if cleanliness_value is None:
            # 如果未获取到有效清洁度数据，打印相应信息并返回
            print("未获取到有效清洁度数据")
            return
        # 从配置文件中获取清洁度标准值
        standard_value = qj.standard_value
        if cleanliness_value > standard_value:
            # 如果当前清洁度值大于标准值，打印超标信息
            print(f"清洁度设定值判断超标，当前值为{cleanliness_value}，高于标准值{standard_value}")
            # 构造故障信息
            fault_info = {
                "gu_zhang_ming_cheng": "清洁度超标",
                "she_bei_ming_cheng": "清洁度监测设备",
                "she_bei_qu_yu": "设备区域（需根据实际修改）",
                "gu_zhang_shi_jian": datetime.now().strftime("%Y-%m-%dT%H:%M:%S"),
                "gu_zhang_lei_xing": "清洁度异常",
                "shi_ji_zhi": cleanliness_value,
                "gao_jing_zhi": standard_value,
                "gu_zhang_miao_shu": f"清洁度设定值判断超标，当前值为{cleanliness_value}，高于标准值{standard_value}",
                "chu_li_zhuang_tai": "未处理"
            }
            # 调用 send_fault_to_api 函数推送故障信息
            send_fault_to_api(fault_info)
        else:
            # 如果当前清洁度值小于等于标准值，打印未超标信息
            print(f"清洁度未超标，当前值为{cleanliness_value}")
    else:
        # 如果请求失败，打印状态码
        print(response.status_code)

# 程序入口，调用 Youqj 函数进行清洁度检查
if __name__ == "__main__":
    Youqj()